home *** CD-ROM | disk | FTP | other *** search
- *=$0400 ;BECK Module
-
- .nolist
-
- jmp INIT
- jmp QUIT
-
- NW: .byte 0 ;1030 # of words
- .byte <KeyNum ;1031
- .byte >KeyNum ;1032
- .byte <KeyWords ;1033
- .byte >KeyWords ;1034
- .byte <Zip+1 ;1035
- .byte >Zip ;1036
-
- INIT: ;set indirect vectors
- lda #<Token
- sta 780
- lda #>Token
- sta 781
- lda #<List
- sta 782
- lda #>List
- sta 783
- lda #<State
- sta 784
- lda #>State
- sta 785
- rts
-
- QUIT: ;reset vectors
- lda #33
- sta 780
- lda #67
- sta 781
- lda #205
- sta 782
- lda #81
- sta 783
- lda #169
- sta 784
- lda #75
- sta 785
- rts
-
- Token:
- sta 2 ;save current chr
- ldy #<KeyWords
- lda #>KeyWords
- jsr 17378 ;search through table
- bcc B3 ;no match found
- adc #166 ;token = 38+list#+128
- ldx #0 ;ext statement flag
- clc ;word found flag
- jmp 17185 ;continue
- B3: sec ;no match flag
- lda 2 ;original chr
- jmp 17185
-
- List:
- cpx #0 ;test for statement
- bne B4 ;exit if function
- cmp NW ;must be less
- bcs B4
- sec
- sbc #39 ;change 39+ to 0+
- tay
- lda KeyNum,y
- clc
- adc #<KeyWords
- tay
- lda #0
- adc #>KeyWords
- sty 36
- sta 37
- clc
- jmp 20941 ;continue
- B4: sec
- jmp 20941
-
- State:
- cmp NW ;must be less
- bcs B5
- sec ;change 39+ to 0+
- sbc #39
- sta 6
- cmp #20 ;get rid of 20
- bcc *+4
- dec 6
- lda #>Exec ;high byte first
- pha
- lda #<Exec
- pha
- clc
- B5: jmp 19369 ;continue
-
- Exec:
- nop
- sta $ff01
- Zip: jsr $1234
- lda #0
- sta $ff00
- rts
-
- KeyNum: .byte 0
-
- *=*+32
-
- KeyWords: .byte 0
-
- .end
-